§ Fox3.0 APP打包指南(Android)
§ 初始版本包说明
初始版本包是用于在安装app后,第一次打开APP后解压的资源。如下图所示,版本包中一般包含两个文件夹:

§ configuration
放置配置文件,其中client.properties是主要的配置文件,配置说明如下
#交易资源地址
web/mainApp=fox
#主工程回退键事件
web/backAction=javascript:fox.custom.back()
#小程序回退键事件
web/appBackAction=javascript:fox.custom.back()
#安全配置
#security/scopes=[]
security/scopes=[]
#是否启用更新
version/updateEnabled=true
#版本服务器地址
version/address=http://139.199.79.118:9705
#版本服务器连接策略 radom/options
version/connectPolicy=options
#更新任务(requestPath,savePath,needRestart)
version/updateTasks = [update/app/configuration/client.properties,configuration/client.properties,true];fox
#APK更新任务(requestPath,savePath)
version/apkUpdateTasks=[update/app/apk,version/apk]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
启动页面支持两种配置方式
- web/mainApp 直接配置主工程名称的方式,外壳启动时会自动把前端资源从服务端拉取下来 需要开启
自动更新功能 - web/startUrl 直接配置启动页面url,支持
httplocal远程和本地两种方式,可以不开启自动更新功能
::: tips 如果采用配置主工程名的方式,服务端需要配置多个目录 :::
服务端更新目录
- update/app/apk
- update/app/configuration
- update/app/workspace
web主程序
如需要更新主工程名为fox的前端工程
需要建立update/app/workspace/fox目录,并且在fox目录内放入全部web资源,fox下直接是web资源
§ workspace
放置web资源,内部结构如下
- main_app 主工程(名称可改),必须与client.properties中得入口APP名保持一致
- h5_apps 子工程目录,可多个目录名和应用名一致
- cdn 公共JS、CSS库目录,是平台CND路径的本地缓存目录
PS:初始版本包的示例一般会在源代码包的version文件夹下
§ 初始版本包打包
初始版本包打包有两种方式,分别为在线打包和手工打包,下面我只介绍手工打包。
§ 步骤一
选中workspace和configuration目录,并使用zip方式压缩这两个目录,切记这两个目录是是顶层目录,他们是不允许有父亲目录的。
§ 步骤二
把步骤一产生的压缩包,改名app对应的包名,包名可以在android工程中的app模块中的build.gradle文件获取

§ 步骤三
把初始版本包压缩包,放入android工程中app模块下assets/version目录下。

§ APP打包
APP打包需要使用android studio,请预先准备环境。
§ 步骤一
选择android studio顶部菜单Build->Generate Signed Bundle/APK,并打开向导选择APK,点击next

§ 步骤二
选择已有的签名文件或创建新签名文件,点击next

§ 步骤三
选择需要打包的package,并勾上签名版本,点击finish,打包完成后IDE会弹出提示,并提示apk所在目录。

§ 多渠道打包说明
在我们开发过程中,通常需要打包几个APK,如开发、UAT和生产。如果同时三份代码,那么维护就比较麻烦了。多渠道打包的办法就能很好的解决这个问题。具体的办法是在app模块中的build.gradle文件中的productFlavors节点中添加配置,如下分别有pad_demo和phone_demo两个flavor,我们在打包的过程中选择所需的flavor进行打包即可。
productFlavors {
pad_demo {
applicationId "fox.app.pad"
versionCode 1
versionName "1.0.0"
minSdkVersion 21
targetSdkVersion 22
manifestPlaceholders = [app_name: "移动平台(PAD)", icon: "@mipmap/ic_launcher_fox",bdkey:"ixVXFlhEFLSAXtA2IVeNF0CNw2chONRQ",screenOrientation:"landscape"]
ndk {
abiFilters 'armeabi-v7a'
}
dimension "channel"
}
phone_demo {
applicationId "fox.app.phone"
versionCode 2
versionName "1.0.1"
minSdkVersion 21
targetSdkVersion 22
manifestPlaceholders = [app_name: "移动平台", icon: "@mipmap/ic_launcher_fox",bdkey:"ixVXFlhEFLSAXtA2IVeNF0CNw2chONRQ",screenOrientation:"portrait"]
ndk {
abiFilters 'armeabi-v7a'
}
dimension "channel"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27